package net.eyra.struts.actions;

import java.io.IOException;
import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import net.eyra.negocio.aplicacion.Direcciones;
import net.eyra.negocio.dao.EyraDaoException;
import net.eyra.negocio.entidades.gestion.direccion.Direccion;
import net.eyra.negocio.entidades.gestion.direccion.Pais;
import net.eyra.negocio.entidades.gestion.direccion.Provincia;
import net.eyra.negocio.propietarios.Propietarios;

import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.actions.DispatchAction;

import com.google.gson.Gson;

public class DireccionAction extends DispatchAction {

    private Direcciones direcciones = new Direcciones();
    private Propietarios propietarios = new Propietarios();

    public ActionForward ListaProvinciasPorPais(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response)
                                                                                                                                                 throws IOException {

        int id_pais = Integer.parseInt(request.getParameter("val"));

        List<Provincia> provincias = null;
        String respuesta = "[";
        try {
            provincias = direcciones.ListaProvinciasPorPais(id_pais);

            for (Provincia provincia : provincias) {
                if (!respuesta.equals("[")) respuesta += ",";
                respuesta += "{'When':'" + id_pais + "', 'Value':'" + provincia.getId_provincia() + "','Text':'" + provincia.getNombre() + "'}";
            }
            respuesta += "]";
        } catch (EyraDaoException e) {
        }

        response.setCharacterEncoding("UTF-8");
        response.getWriter().write(respuesta);

        return null;
    }

    public ActionForward CargarListaProvinciasPorPais(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response)
                                                                                                                                                       throws IOException {
        int id_pais = Integer.parseInt(request.getParameter("id_pais"));

        List<Provincia> provincias = null;
        try {
            provincias = direcciones.ListaProvinciasPorPais(id_pais);

            Gson json = new Gson();

            response.setCharacterEncoding("UTF-8");
            response.setContentType("text/plain");
            response.getWriter().write(json.toJson(provincias));

        } catch (EyraDaoException e) {
        }

        return null;

    }

    public ActionForward CargarListaPaises(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response)
                                                                                                                                            throws IOException {

        List<Pais> paises = null;
        try {
            paises = direcciones.ListaPaises();

            Gson json = new Gson();

            response.setCharacterEncoding("UTF-8");
            response.setContentType("text/plain");
            response.getWriter().write(json.toJson(paises));

        } catch (EyraDaoException e) {
        }

        return null;
    }

    public ActionForward GuardarDireccionPropietario(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response)
                                                                                                                                                      throws IOException {

        try {
            int id_propietario = Integer.parseInt(request.getParameter("id_propietario"));

            String activa = request.getParameter("activa");
            String calle = request.getParameter("calle");
            String codigo_postal = request.getParameter("codigo_postal");
            String poblacion = request.getParameter("poblacion");
            String observaciones = request.getParameter("observaciones");
            int id_provincia = Integer.parseInt(request.getParameter("id_provincia"));
            int id_pais = Integer.parseInt(request.getParameter("id_pais"));

            Direccion direccion = propietarios.DatosPropietario(id_propietario).getDireccion();

            direccion.setActiva(activa);
            direccion.setCalle(calle.toUpperCase());
            direccion.setCodigo_postal(codigo_postal.toUpperCase());
            direccion.setPoblacion(poblacion.toUpperCase());
            direccion.setObservaciones(observaciones);
            direccion.getProvincia().setId_provincia(id_provincia);
            direccion.getProvincia().getPais().setId_pais(id_pais);

            direcciones.ActualizarDireccion(direccion);

            response.setCharacterEncoding("UTF-8");
            response.setContentType("text/plain");
            response.getWriter().write("success");
        } catch (Exception e) {
            response.setCharacterEncoding("UTF-8");
            response.setContentType("text/plain");
            response.getWriter().write(e.toString());
        }

        return null;
    }

}
